<?php

namespace app\user\controller;

use think\captcha\Captcha;
use think\Controller;
use think\Request;

// 用户基类
class Base extends Controller
{
    /**
     * 批量验证变量是否存在
     * $data：字段数组 $m：访问类型 $empty：空值也是不存在
     */
    public function hasVariable($data = [], $m = 'post', $empty = false)
    {
        // 遍历检测
        foreach ($data as $value) {
            // 判断字段是否存在
            if (!Request::instance()->has($value, $m)) {
                return false;
            } else {
                // 判断是否验证空值
                if ($empty) {
                    // 判断字段是否为空值
                    if (empty(Request::instance()->$m($value))) {
                        return false;
                    }
                } else {
                    return false;
                }
            }
        }
        return true;
    }

    /**
     * 自动赋初始值
     * $key：变量本身 $val：默认值 $content：判断条件
     */
    public function hasValue($key, $val = '', $content = null)
    {
        // 三元运算
        $data = $key == $content ? $val : $key;
        return $data;
    }

    /**
     * 分页设置
     * $page：当前页码 $limit：显示数量
     */
    public function hasPaging($page = 1, $limit = 10)
    {
        // 当前页码
        $_page = (input('page') == null || input('page') == '0') ? $page : input('page');
        // 返回数量
        $_limit = input('limit') == null ? $limit : input('limit');
        // 分页
        return implode(',', [($_page * $_limit) - $_limit, $_limit]);
    }

    /**
     * 发送邮件
     * 0.发送失败 1.发送成功 2.发送信息错误 3.配置信息错误
     */
    public function sendEmail($info = [])
    {
        // 获取邮箱配置
        $mailpz = getConfig('emailset');
        // 判断配置详情
        if (!empty($mailpz) && !empty($mailpz['password'])) {
            // 判断发送内容
            if (@$info['to'] && @$info['title'] && @$info['content']) {
                // 初始化发送信息
                $to = $info['to'];
                $title = $info['title'];
                $content = $info['content'];
                // 发送邮件
                $sendMail = sendMail($to, $title, $content, $mailpz);
                // 判断发送是否成功
                if ($sendMail) {
                    return (['code' => '1', 'msg' => '邮件发送成功,请注意查收！']);
                } else {
                    return (['code' => '0', 'msg' => '邮件发送失败']);
                }
            } else {
                return (['code' => '2', 'msg' => '邮件发送失败,错误的内容格式']);
            }
        } else {
            return (['code' => '3', 'msg' => '管理员未开启邮箱服务']);
        }
    }

    /**
     * 更新一个验证码
     */
    public function upCode()
    {
        $captcha = new Captcha();
        $captcha->entry();
        $c = '';
        foreach (session('lycmscode') as $key => $value) {
            $c .= $value;
        }
        return $c;
    }
}
